# @shuaige : 陈世玉
# @name :01-基本使用.py
# @time :2024/12/4 22:41
from bs4 import BeautifulSoup
#1.解析本地文件
with open("1.html","r",encoding="utf-8") as f:
    soup=BeautifulSoup(f,"lxml")
    #print(soup)

#bs4的一系列函数应用
#1.find
# print(soup.find("a"))
# print(soup.find("a",id="1"))
#2.find_all
    #print(soup.find_all("a"))
    #print(soup.find_all(["a","p"]))
#3.limit表示限制 查找前几个数据
    #print(soup.find_all("li",limit=2))
#3.select（推荐）
#select方法可以通过标签名、类名、id名、属性名、属性值、子标签、兄弟标签等来定位元素
#返回的是一个列表。包含多个数据

#含有class属性的可以通过点来定位class 这种操作叫做类选择器
# print(soup.select(".l5"))

# id选择器
print(soup.select("#l1"))

#属性选择器
print(soup.select("li[id=l2]"))

#层级选择器
#__后代选择器
# print(soup.select("div li"))
#__子选择器
print(soup.select("div>ul>li"))
print(soup.select("a,li"))
obj=soup.select("#d1")[0]

# print(obj.string)
# print(obj.get_text())

#节点的属性
obj1=soup.select("#p")[0]
print(obj1.name)
#将属性以字典形式打印
print(obj1.attrs)

#获取节点的属性
obj2=soup.select("#p")[0]
print(obj2["name"])
print(obj2.get("name"))
print(obj2.attrs["name"])#比较稳定
